Add full Playwright e2e test suite#3
Merged
Merged
Conversation
The UI is styled entirely with inline styles and exposes almost no stable selectors: icon-only buttons (member remove, color reset, schedule nav) and dozens of anonymous range sliders share no distinguishing text or role. To let an end-to-end suite target controls reliably — without coupling tests to copy or fragile DOM structure — add data-testid attributes to the controls that lack a stable accessible name. The additions are purely non-visual: the Slider primitive grows an optional testId prop applied to its range input, and call sites key their testids off existing entity ids (member / category / task) so they stay unique as lists grow and reorder. Controls that already carry an aria-label or visible text (tabs, header buttons, add/demo/clear, schedule view switch) are left as-is.
Comprehensive e2e coverage that exercises every user-facing feature as closely as a real user would, across three browser engines (Chromium, Firefox, WebKit) and four viewports (phone 390, tablet 820, laptop 1366, desktop 1680) — 12 projects in total. Two tiers: - Core (offline, no secrets): tab navigation; matrix quadrant placement and click-to-edit; team add/remove, capacity, category baselines, availability windows, and energy/concentration tuning; task scoring (sliders move the quadrant) and the none/fuzzy/exact due-date picker; categories and stakeholders; the day/week/month/year schedule and its empty state; insights (burnout, pain points, narrative branches); customize (theme preset, light/dark, colour overrides, fonts); JSON import/export and CSV import; responsive tab-label collapse; and localStorage persistence plus legacy-schema migration. - Live (gated on T2V_TEST_USER_EMAIL / T2V_TEST_USER_PASSWORD): drives the real Talk2View chat widget — login/logout, a round-trip conversation, and model switching via the settings panel — and skips cleanly when the secrets are absent (locally and on forks). To stay deterministic the harness seeds project state into localStorage before first paint and freezes the clock and timezone, so the date-sensitive schedule and due-date logic render identically on every machine. A named screenshot and a console/pageerror log are attached for every test, pass or fail; Playwright traces and video stay failure-only unless FULL_ARTIFACTS=1 is set. Specs are split per feature and tagged (@core / @LiVe / @mobile) so a subset can be run while iterating, with npm scripts for the common slices. A GitHub Actions workflow runs the core tier on every pull request and the live tier when the credentials are configured, caching browsers and uploading reports plus artifacts on both success and failure.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
T2V_TEST_USER_EMAIL/T2V_TEST_USER_PASSWORD): drives the real Talk2View chat widget — login/logout, a round-trip conversation, and model switching via the settings panel. Skips cleanly when the secrets are absent (locally and on forks).data-testidseams added toApp.jsx/CsvImportModal.jsxfor icon-only buttons and anonymous range sliders.Notes
FULL_ARTIFACTS=1.@core/@live/@mobiletags + npm scripts (test:e2e:core,:live,:mobile,:chromium); run one feature withnpx playwright test team..github/workflows/e2e.yml: core tier on every PR; live tier when the secrets are configured; browser caching; reports + artifacts uploaded on success and failure.Test plan